﻿using System.Collections.Generic;
using BusinessObjects.BussinessDictionary;

namespace DataObjects.StandartInterfaces.Dictionary
{
    /// <summary>
    /// Defines methods to access FixedAssetCategory
    /// </summary>
    /// <remarks>
    /// This is a database-independent interface. Implementations are database specific
    /// </remarks>
    public interface IFixedAssetCategoryDao
    {
        /// <summary>
        /// Gets the accounts for combo tree.
        /// </summary>
        /// <param name="accountId">The account identifier.</param>
        /// <returns>List{FixedAssetCategoryEntity}.</returns>
        List<FixedAssetCategory> GetFixedAssetCategorysForComboTree(int accountId);
        /// <summary>
        /// Gets the inventory item categories by parent.
        /// </summary>
        /// <param name="parentId">The parent identifier.</param>
        /// <returns></returns>
        List<FixedAssetCategory> GetFixedAssetCategorysByParent(long parentId);

        /// <summary>
        /// Gets the paged.
        /// </summary>
        /// <param name="unitId">The unit identifier.</param>
        /// <param name="currentPage">The current page.</param>
        /// <returns></returns>
        List<FixedAssetCategory> GetPaged(int unitId, int currentPage);

        /// <summary>
        /// Gets the size of the page.
        /// </summary>
        /// <param name="unitId">The unit identifier.</param>

        /// <returns></returns>
        int GetPageSize(int unitId);

        /// <summary>
        /// Gets the FixedAssetCategorys by unit.
        /// </summary>
        /// <returns></returns>
        FixedAssetCategory GetFixedAssetCategory(long fixedAssetCategoryId);

        List<FixedAssetCategory> GetFixedAssetCategorysByUnit(long unitId);
        /// <summary>
        /// Inserts the FixedAssetCategory.
        /// </summary>
        string InsertFixedAssetCategory(FixedAssetCategory fixedAssetCategory);

        /// <summary>
        /// Updates the FixedAssetCategory.
        /// </summary>
        
        string UpdateFixedAssetCategory(FixedAssetCategory fixedAssetCategory);

        /// <summary>
        /// Deletes the FixedAssetCategory.
        /// </summary>
        string DeleteFixedAssetCategory(FixedAssetCategory fixedAssetCategory);
    }
}
